package com.nami.ucenter.controller.utils;

import java.util.Random;

public class ChineseNameUtil {

    private static final String[] SURNAME = {"赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈"};
    private static final String[] NAME_CHARS = {
            "权", "羽", "月", "蒙", "朋", "略", "奎", "韵", "嘉", "方",
            "紫", "淼", "姗", "春", "炳", "纯", "麒", "彩", "洺", "顺",
            "凝", "宣", "辰", "诒", "家", "川", "恒", "谨", "可", "山",
            "璟", "棋", "丞", "雪", "晔", "献", "岩", "莲", "友", "振",
            "璐", "廷", "佩", "言", "学", "焘", "选", "昌", "俪", "洪",
            "章", "诗", "厚", "承", "雨", "儒", "珑", "芷", "歌", "旭",
            "生", "喜", "茂", "臻", "裕", "津", "华", "健", "声", "励",
            "菁", "佳", "勋", "萍", "汝", "勤", "梦", "跃", "雄", "若",
            "连", "毓", "霖", "霏", "冠", "菊", "芸", "崊", "聪", "育",
            "建", "和", "敬", "帆", "湾", "谋", "晨", "全", "偌", "靓",
            "雷", "骄", "继", "钊", "卫", "颖", "世", "显", "珊", "晴",
            "优", "函", "苒", "保", "阳", "儿", "莹", "映", "展", "北",
            "鹏", "琪", "标", "虹", "巧", "锋", "贤", "佚", "洁", "芳",
            "允", "康", "麟", "革", "与", "好", "巩", "玲", "道", "功",
            "泓", "冬", "孟", "珺", "渲", "瑾", "吉", "碧", "祥", "蔚",
            "露", "畅", "邦", "孝", "筱", "沛", "礼", "渺", "谱", "燕",
            "才", "岚", "照", "男", "珠", "婧", "政", "隆", "海", "开",
            "立", "骅", "谊", "美", "仪", "艳", "然", "为", "菡", "禾",
            "淇", "忻", "融", "爱", "勇", "韬", "尚", "忠", "理", "朝",
            "城", "启", "钧", "萱", "毅", "百", "荣", "长", "莉", "舒",
            "天", "黎", "罡", "昊", "万", "明", "曼", "婉", "娇", "传",
            "帅", "炜", "奇", "灿", "艺", "鲁", "梅", "纪", "怀", "营",
            "航", "容", "慧", "少", "骏", "希", "培", "申", "蓓", "国",
            "会", "昕", "丰", "旻", "汉", "巍", "彦", "兵", "垒", "潞",
            "翰", "清", "军", "伦", "冰", "诚", "绍", "同", "涛", "祺",
            "剑", "钦", "桂", "朗", "平", "涵", "誉", "贵", "琴", "棠",
            "凯", "臣", "志", "妹", "珮", "金", "焕", "加", "卉", "力",
            "钢", "备", "寿", "灵", "基", "娆", "凤", "子", "任", "中",
            "磊", "升", "曦", "安", "光", "雯", "如", "风", "定", "西",
            "琳", "济", "向", "发", "湘", "英", "源", "星", "非", "迅",
            "雅", "洋", "秀", "捷", "丛", "心", "雁", "进", "科", "望",
            "登", "智", "其", "波", "滔", "娴", "静", "真", "群", "伟",
            "锐", "凡", "枫", "桐", "怡", "倩", "盛", "竹", "珍", "时",
            "豪", "议", "亿", "斌", "璇", "珂", "洲", "琦", "宪", "漫",
            "堂", "君", "瀚", "兆", "常", "宁", "双", "笑", "先", "泰",
            "年", "有", "业", "溓", "瑜", "茜", "睿", "益", "泉", "涓",
            "蓉", "浩", "贝", "红", "泽", "晓", "延", "劲", "田", "逸",
            "影", "惠", "玟", "博", "蓝", "兰", "骁", "思", "玉", "克",
            "根", "伊", "彬", "小", "润", "敖", "牧", "皓", "江", "丽",
            "伯", "南", "盈", "彤", "馨", "萌", "鸿", "叶", "达", "沁",
            "晋", "品", "云", "采", "齐", "忆", "悦", "森", "瑷", "景",
            "腾", "晖", "耀", "威", "卿", "朦", "广", "镇", "依", "至",
            "石", "菏", "媛", "之", "亦", "起", "义", "梓", "松", "坤",
            "素", "芬", "赏", "杰", "昭", "丹", "材", "韦", "滨", "俊",
            "咏", "峰", "利", "轩", "香", "震", "名", "扬", "晗", "熙",
            "妮", "玮", "潇", "婷", "欣", "琛", "卓", "谦", "大", "彪",
            "锦", "兴", "策", "宗", "元", "铭", "多", "凌", "丫", "溪",
            "宏", "易", "福", "乐", "朔", "崇", "充", "沣", "亮", "州",
            "语", "鑫", "树", "青", "琸", "霞", "书", "翔", "德", "楚",
            "夫", "文", "超", "林", "玹", "恩", "行", "嫒", "富", "仁",
            "蕊", "奕", "宜", "鸣", "满", "柏", "蕾", "茗", "铁", "予",
            "愉", "来", "爽", "朵", "意", "甜", "宝", "晶", "聆", "芝",
            "宇", "久", "钰", "瑶", "逦", "运", "妍", "亭", "武", "一",
            "乔", "岳", "潮", "聚", "蔓", "水", "夏", "冉", "睻", "靖",
            "栋", "胜", "秋", "维", "虎", "颜", "彰", "姿", "正", "祖",
            "成", "良", "娟", "银", "坚", "晟", "日", "亚", "尧", "鹤",
            "东", "乃", "庆", "瑞", "信", "仲", "杨", "泊", "哲", "圣",
            "强", "霄", "珏", "微", "敏", "迎", "驰", "迪", "远", "赫",
            "伶", "京", "娜", "刚", "永", "龙", "舜", "飞", "菲", "高",
            "新", "莺", "越", "苹", "识", "庭", "怿", "民", "楠", "士",
            "征", "妙", "淑", "纶", "辉", "善", "锡", "化"

    };
    private static final Random RANDOM = new Random();

    /**
     * 生成随机中文名字
     * @param nameLength 名字的长度（包括姓氏）
     * @return 随机生成的中文名字
     */
    public static String generateRandomChineseName(int nameLength) {
        if (nameLength < 2 || nameLength > 3) {
            throw new IllegalArgumentException("名字长度必须是2或3");
        }

        // 随机选择一个姓氏
        String surname = SURNAME[RANDOM.nextInt(SURNAME.length)];
        StringBuilder name = new StringBuilder(surname);

        // 根据指定的名字长度生成名字部分
        for (int i = 1; i < nameLength; i++) {
            String nameChar = NAME_CHARS[RANDOM.nextInt(NAME_CHARS.length)];
            name.append(nameChar);
        }

        return name.toString();
    }

    public static String randomName() {
        int nameLength = 2 + RANDOM.nextInt(2); // 随机选
        return generateRandomChineseName(nameLength);
    }

    public static void main(String[] args) {
        // 测试生成随机中文名字
        for (int i = 0; i < 10000; i++) {
            int nameLength = 2 + RANDOM.nextInt(2); // 随机选择名字长度为2或3
            System.out.println(generateRandomChineseName(nameLength));
        }
    }
}
